﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;

namespace Lesson10__封装_运算符重载
{
    class Point
    {
        public int x;
        public int y;  

        public static Point operator +(Point p1, Point p2)
        {
            Point p = new Point();
            p.x = p1.x + p2.x;  
            p.y = p1.y + p2.y;
            return p;
        }
    }
    internal class Program
    {
        static void Main(string[] args)
        {
            #region 重载基本特点
            //1:必须是一个公共的静态方法
            //2：返回值必须写在operate之前
            //3：逻辑处理自定义

            //作用 
            //让自定义类结构体对象可以进行运算

            //注意
            //1：条件运算符需要成对实现
            //2：一个符号可以多个重载
            //3：不能使用ref和out
            #endregion
            #region 基本语法
            //public static 返回类型 operator 运算符（参数列表）
            #endregion

            #region 向量坐标加减的实现
            Point p1 = new Point();
            p1.x = 1;
            p1.y = 1;   

            Point p2 = new Point();

            p2.x = 2;

            p2.y = 2;

            Point p3 = p1 + p2;
            
            #endregion

            //总结
            //1：参数的数量
            //2：条件运算符的配对实现
            //3：一个符号可以多个重载
        }
    }
}
